//
//  YLEmptyDataProvider.swift
//  Swift-Codedase
//
//  Created by xyanl on 2023/9/12.
//


import Foundation
import UIKit

// 这个类负责为表视图生成占位符
// 获取占位符对象列表，并为每个人生成数据源和委托
// 占位符视图是一个只有一个单元格的表视图
final class YLEmptyDataProvider {
    
    /// 占位符数据的字典
    private var placeholdersDictionary = [YLEmptyDataKey: YLEmptyDataImplement]()
    
    // MARK: init methods
    
    /// 创建并返回带有指定(自定义)占位符的PlaceholdersProvider对象
    /// - Parameter placeholders: 占位符
    init(_ placeholders: [YLEmptyDataObject]) {
        placeholders.forEach {
            placeholdersDictionary[$0.emptyDataKey] = YLEmptyDataImplement($0)
        }
    }
    
    /// 可以在通用的provider上根据不同页面添加不同的placeholder
    /// - Parameter placeholders: 多个新的占位符
    /// - Returns: YLEmptyDataProvider
    func add(_ placeholders: [YLEmptyDataObject]) -> YLEmptyDataProvider {
        placeholders.forEach {
            placeholdersDictionary[$0.emptyDataKey] = YLEmptyDataImplement($0)
        }
        return self
    }
    
    /// 返回YLEmptyDataImplementDelegate的实例, 返回无占位符的空值
    /// - Parameter key: 占位符的 key
    /// - Returns: 返回YLEmptyDataImplementDelegate的实例根据key
    func dataSourceAndDelegate(with key: YLEmptyDataKey) -> YLEmptyDataImplement? {
        return placeholdersDictionary[key]
    }
    
}
